#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

typedef int SLDataType;
typedef struct SeqList
{
    SLDataType *a;
    int size;     // 记录多个有效数据
    int capacity; // 记录空间有多大，扩容有消耗，所以不是一个一个malloc
} SL;

// 形参是实参的临时拷贝
void SLInit(SL *psl);
void SLDestroy(SL *psl);

void SLPrint(SL *psl);
void SLCheckCapacity(SL *psl);

void SLPushBack(SL *psl, SLDataType x);
void SLPushFront(SL *psl, SLDataType x);
void SLPopFront(SL *psl);
void SLPopBack(SL *psl);
void SLInsert(SL *psl, int pos, SLDataType x);

void SLErase(SL *psl, int pos);

// 找到返回下标
// 没有找到返回-1
int SLFind(SL *psl, SLDataType x);